const path = require('path')
const htmlwebpackplugin = require('html-webpack-plugin') //这个插件可以使webpack打包时自动生成html文件
const {CleanWebpackPlugin} = require('clean-webpack-plugin') //这个插件可以清除上次打包生成的dist

module.exports={
    entry:"./src/index.ts",
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'bundle.js',
        /* environment:{
            arrowFunction:false //关闭webpack打包后生成箭头函数 可选
        } */
    },
    //loader
    module:{
        rules:[
            {
                test:/\.ts$/,
                use:
                [
                    {
                        //指定babel-loader
                        loader:"babel-loader",
                        options:{
                            //设置预定义环境
                            presets:[
                                [
                                    //设置预定义环境为babel默认环境
                                    "@babel/preset-env",
                                    //配置信息
                                    {
                                        //要兼容的目标浏览器
                                        targets:{
                                            "firefox":"91"
                                        },
                                        //指定corejs版本
                                        "corejs":"3",
                                        //指定corejs按需加载
                                        "useBuiltIns":"usage"
                                    }
                                ]
                            ]
                        }
                    },
                    //指定ts-loader
                    require.resolve('ts-loader') 
                ],
                exclude:/node-modules/
            },
            {
                //设置less文件处理
                test:/.\less$/,
                use:[
                    "style-loader",
                    "css-loader",
                    "less-loader" //由下向上执行
                ]
            }
        ]
    },
    //插件
    plugins:[
        new htmlwebpackplugin({
            template:"./src/index.html" //生成html的网页模板
        }),
        new CleanWebpackPlugin()
    ],
    //用来设置引用模块
    //如入口文件(及其他文件)中 哪些import是可以被编译的，哪些import是不需要被编译的
    resolve:{
        extensions:['.ts','.js']
    }
}